import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueSetupExtend from 'unplugin-vue-setup-extend-plus/vite'
import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import viteCompression from 'vite-plugin-compression'
import { VantResolver } from '@vant/auto-import-resolver'

// https://vitejs.dev/config/
export default defineConfig({
  // 项目上线的路径
  //    如果上线到服务器web服务根目录，则无需设置，默认为 /
  //    如果上线到服务器web服务根目录下的 mz 目录，则需要设置为 /mz
  base: '/mz',
  plugins: [
    vue(),
    // name 可以写在 script 标签上
    vueSetupExtend({}),
    /**
     * 减少 import 导入的插件
     */
    AutoImport({
      imports: ['vue', 'vue-router', 'pinia']
      // dirs: ['src/stores', 'src/api']
    }),

    /**
     * 自动解析组件且将其导入的插件
     */
    Components({
      // relative paths to the directory to search for components.
      dirs: ['src/components'],

      // 是否要生成ts类型到components.d.ts文件中
      dts: true,

      // 配置第三方UI组件库解析程序
      resolvers: [VantResolver()]
    }),

    /**
     * 开启gzip压缩，在生成构建产物的时候，会多生成 .gz 的文件
     *
     *    减少服务器做压缩的工作，在这个工作在构建时先做了。
     */
    viteCompression({
      verbose: true,
      disable: false,
      threshold: 10240,
      algorithm: 'gzip',
      ext: '.gz'
    })
  ],
  resolve: {
    // 路径别名
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})
